package ventanas;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import org.jdesktop.swingx.JXStatusBar;
import controlador.InventarioController;
import recursos.Sesion;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.KeyEvent;

public class FMenu extends JFrame implements Runnable{
	
	private static final long serialVersionUID = 1L;
	protected JMenuBar mnMenuBar;
	protected JDesktopPane dpEscritorio;
	private JXStatusBar stbBarraEstado;
	private JLabel lblUsuario;
	private JLabel lblSistema;
	private JLabel lblFecha;
	private Thread hilo;
	private JButton btnSalir;
	private SimpleDateFormat sdf = new SimpleDateFormat(
			"EEEEEEEEE dd 'de' MMMMM 'de' yyyy hh:mm:ss");
	private JMenu mnGestionInventario;
	private JMenu mnAdministracinDeDiferencias;
	private JMenuItem mntmIngreso;
	private JMenuItem mntmReconteo;
	private JMenu mnMantenimiento;
	private JMenuItem mntmUsuarios;
	
	public FMenu() {
		setTitle(Sesion.titulo+"-"+Sesion.tfMenu);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		setIconImage(Sesion.cargarImagen(Sesion.imgRTM));
		setSize(Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height-33);
		setVisible(true);
		
		mnMenuBar = new JMenuBar();
		setJMenuBar(mnMenuBar);

		stbBarraEstado = new JXStatusBar();
		getContentPane().add(stbBarraEstado, BorderLayout.SOUTH);

		dpEscritorio = new JDesktopPane();
		dpEscritorio.setLayout(null);
		dpEscritorio.setBackground(Color.WHITE);
		getContentPane().add(dpEscritorio, BorderLayout.CENTER);

		lblSistema = new JLabel("Sistema: " + Sesion.sistema);
		stbBarraEstado.add(lblSistema);

		JSeparator separador2 = new JSeparator();
		separador2.setOrientation(JSeparator.VERTICAL);
		stbBarraEstado.add(separador2);

		lblUsuario = new JLabel("Usuario: " + Sesion.usuario);
		stbBarraEstado.add(lblUsuario);
		
		JSeparator separador4 = new JSeparator();
		separador4.setOrientation(JSeparator.VERTICAL);
		stbBarraEstado.add(separador4);
		
		lblFecha = new JLabel(sdf.format(Calendar.getInstance().getTime()));
		stbBarraEstado.add(lblFecha);
				
		btnSalir = new JButton("",Sesion.cargarIcono(Sesion.imgSalir));
		btnSalir.setToolTipText("Salir");
		btnSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);				
			}
		});
		
		mnMantenimiento = new JMenu("Mantenimiento");
		mnMenuBar.add(mnMantenimiento);
		
		mntmUsuarios = new JMenuItem("Usuarios");
		mnMantenimiento.add(mntmUsuarios);
		
		mnGestionInventario = new JMenu("Gesti\u00F3n Inventario");
		mnMenuBar.add(mnGestionInventario);
		
		mntmIngreso = new JMenuItem("Ingreso");
		mntmIngreso.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.CTRL_MASK));
		mnGestionInventario.add(mntmIngreso);
		
		mntmReconteo = new JMenuItem("Reconteo");
		mntmReconteo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK));
		mnGestionInventario.add(mntmReconteo);
		
		mnAdministracinDeDiferencias = new JMenu("Administraci\u00F3n de Diferencias");
		mnAdministracinDeDiferencias.setMnemonic(KeyEvent.VK_A);
		mnMenuBar.add(mnAdministracinDeDiferencias);
		mnMenuBar.add(btnSalir);
		
	    hilo=new Thread(this);
	    hilo.start();
	}
	
	@Override
	public void run() {
		Thread miHilo=Thread.currentThread();
		while(miHilo==hilo) {
	        try{
	            Thread.sleep(1000);
	        }catch (InterruptedException e) { 
	        	
	        }   
	        lblFecha.setText(sdf.format(Calendar.getInstance().getTime()));
	    }
		
	}
	
	public JMenu getAdministracinDeDiferencias(){
		return mnAdministracinDeDiferencias;
	}
	
	public JMenuItem getIngreso(){
		return mntmIngreso;
	}
	
	public JMenuItem getReconteo(){
		return mntmReconteo;
	}
	
	public JDesktopPane getEscritorio(){
		return dpEscritorio;
	}
	
	public JMenuItem getUsuario(){
		return  mntmUsuarios;
	}
	
	public void setControlador(InventarioController controlador){
		mnAdministracinDeDiferencias.addMouseListener(controlador);
		mntmIngreso.addActionListener(controlador);;
		mntmReconteo.addActionListener(controlador);;
		mntmUsuarios.addActionListener(controlador);;
	}
}
